package com.yyi.springcloud.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@Component
public class JedisClientSingle{
    @Autowired
	private JedisPool jedisPool;
	public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String string = jedis.get(key);
		jedis.close();
		return string;
	}
	//为某个key中追加内容
	public Long append(String key,String value) {
		Jedis jedis = jedisPool.getResource();
		Long append = jedis.append(key, value);
		jedis.close();
		return append;
	}

	public String set(String key, String value) {
		Jedis jedis = jedisPool.getResource();
		String string = jedis.set(key, value);
		jedis.close();
		return string;
	}

	public String hget(String hkey, String key) {
		Jedis jedis = jedisPool.getResource();
		String string = jedis.hget(hkey, key);
		jedis.close();
		return string;
	}

	public long hset(String hkey, String key, String value) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hset(hkey, key, value);
		jedis.close();
		return result;
	}
	//Redis Incr 命令将 key 中储存的数字值增一。
	//如果 key 不存在，那么 key 的值会先被初始化为 0 ，然后再执行 INCR 操作。
	public long incr(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.incr(key);
		jedis.close();
		return result;
	}
    //过期时间
	public long expire(String key, int second) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.expire(key, second);
		jedis.close();
		return result;
	}
    //返回给定 key 的剩余生存时间
	public long ttl(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.ttl(key);
		jedis.close();
		return result;
	}
    //根据key清除缓存
	public long del(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.del(key);
		jedis.close();
		return result;
	}
	//根据hkey和key清除缓存
	public long hdel(String hkey, String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hdel(hkey, key);
		jedis.close();
		return result;
	}

	//选择其他的数据库进行hash存储
	public long selectDbHSet(int index,String hkey, String key, String value){
		Jedis jedis = jedisPool.getResource();
		jedis.select(index);
        Long result = jedis.hset(hkey, key, value);
        jedis.close();
        return result;
    }
    //选择其他的数据库进行hash存储
    public String selectDbHGet(int index,String hkey, String key) {
        Jedis jedis = jedisPool.getResource();
        jedis.select(index);
        String string = jedis.hget(hkey, key);
        jedis.close();
        return string;
    }

}
